package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Categoria;

public class CategoriaDAO {

	private Connection connection;

	public CategoriaDAO() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}

	public Categoria carregaCategoria(ResultSet rs, Categoria categoria)
			throws SQLException {

		categoria.setCategoria(rs.getString("categoria"));
		categoria.setIdCategoria(Long.parseLong(rs.getString("idCategoria")));
		return categoria;
	}

	public List<Categoria> getLista() throws SQLException {

		PreparedStatement stmt = this.connection
				.prepareStatement("select * from categoria order by categoria;");
		ResultSet rs = stmt.executeQuery();

		List<Categoria> categorias = new ArrayList<Categoria>();
		while (rs.next()) {
			Categoria categoria = new Categoria();
			carregaCategoria(rs, categoria);
			categorias.add(categoria);
		}

		rs.close();
		stmt.close();
		return categorias;
	}

	public Categoria getCategoria(long idCategoria) throws SQLException {
		PreparedStatement stmt = 
			this.connection.prepareStatement("select * from categoria where idcategoria=?");
		stmt.setLong(1, idCategoria);
		
		ResultSet rs = stmt.executeQuery();
		
		boolean existeUm = rs.next();
		if( existeUm && rs.next() ) {
			existeUm = false;
		}
		
		Categoria categoria = null;
		if (existeUm) {
			rs.first();
			categoria = new Categoria();
			carregaCategoria(rs, categoria);		
		}

		rs.close();
		stmt.close();
		return categoria;

	}
}
